document.addEventListener("DOMContentLoaded", () => {
  // DOM 元素缓存
  const tipTitle = document.getElementById("tip-title");
  const tipContent = document.getElementById("tip-content");
  const actionButton = document.querySelector(".tip-button");
  const teacherName = document.querySelector(".teacher-name");

  let _data = null;

  // 防抖函数，避免短时间内重复触发
  function debounce(func, wait = 500) {
    let timeout;
    return function executedFunction(...args) {
      const later = () => {
        clearTimeout(timeout);
        func(...args);
      };
      clearTimeout(timeout);
      timeout = setTimeout(later, wait);
    };
  }

  // 创建防抖版本的按钮点击处理函数
  const debouncedHandleButtonClick = debounce(handleButtonClick, 500);

  // 添加按钮点击事件监听器
  actionButton.addEventListener("click", debouncedHandleButtonClick);

  // 监听来自主进程的消息，更新消息框内容
  window.electron.onUpdateTip((data) => {
    tipTitle.textContent = null;
    tipContent.innerHTML = null;

    // 更新提示内容
    if (data.title) {
      tipTitle.textContent = data.title;
    }

    if (data.message) {
      if (Array.isArray(data.message)) {
        // 处理数组类型的消息，使用(1)(2)(3)格式
        tipContent.innerHTML = data.message
          .map((item, index) => `<p>(${index + 1}) ${item}</p>`)
          .join("");
      } else {
        // 处理字符串类型的消息
        tipContent.textContent = data.message;
      }
    }

    // 更新教师名称
    teacherName.textContent = data.teacherName || "老师";

    _data = data;
  });

  // 在页面卸载前清理监听器
  window.addEventListener("beforeunload", () => {
    // 移除按钮点击事件监听器
    actionButton.removeEventListener("click", debouncedHandleButtonClick);

    // 移除Electron事件监听器
    window.electron.removeListeners();
  });

  // 定义按钮点击事件处理函数
  function handleButtonClick() {
    // 发送按钮点击事件到主进程，使用preload暴露的API
    window.electron.sendButtonClick(_data.data.url);
  }
});
